#coding=utf-8
import unittest
from selenium import webdriver
from appium import webdriver
from time import sleep
from nav_plugin_op import nav_plugin_factory
from selenium.common.exceptions import WebDriverException
import os
from Public import BasePage
from Tool.usefulTools import userfulToolsFactory
from Public import BaseConstant
import settings
import random

#实例化基础数据

navOpenFactory = nav_plugin_factory()
userfulTool = userfulToolsFactory()
element_oprate_instances = BasePage.element_Oprate()
element_find_instances = BasePage.BasicAction()

CompEvaluation_Paramter_instances = BaseConstant.CompEvaluation_Paramter
dealHelper_parameter = BaseConstant.DisposeCase

# nav_name = "工作"
# plugin_name = "案卷督办"
nav_name = ["导航栏工作",'xpath',"//android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.FrameLayout/android.widget.RadioButton"]
plugin_name = ["插件列表-综合评价",'name','综合评价']	

class comprehensive_evaluation_factory():

	def open_comprehensiveevaluation_plug(self):
		try:
			element_oprate_instances.element_click(nav_name,settings.pic_file_path)
			BasePage.Base.driver.swipe(400,1000,400,50,1200)
			sleep(2)
			BasePage.Base.driver.swipe(400,400,400,50,1200)
			# 点击"综合评价"的插件，打开插件
			element_oprate_instances.element_click(plugin_name,settings.pic_file_path)
			#等待综合评价页面内容进行加载，加载完成之后进行页面确认并界面
			if  element_oprate_instances.element_display_commit(CompEvaluation_Paramter_instances.group_name_id, settings.pic_file_path):
				element_oprate_instances.element_save_pic(settings.pic_file_path, 'open_comprehensiveevaluation_plug_successful')
			else:
				print u'综合评价页面打开失败'
				element_oprate_instances.element_save_pic(settings.pic_file_path,'Statistics_plug_Open_failed')
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
				raise
		except WebDriverException,error:
			print error
			element_oprate_instances.element_save_pic(settings.pic_file_path, 'open_comprehensiveevaluation_plug_fail')
			raise

	#综合评价-第一个统计分析查询
	def CompEvaluation_first_statis(self):
		try:
			#查看类型
			element_oprate_instances.element_click(CompEvaluation_Paramter_instances.comment_daytype_xpath, settings.pic_file_path)
			# BasePage.Base.driver.swipe(600,800,100,800,1000)

			element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
			#查看类型 --本周
			element_oprate_instances.element_click(CompEvaluation_Paramter_instances.comment_weektype_xpath, settings.pic_file_path)
			element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)

			# 查看类型 --本月
			element_oprate_instances.element_click(CompEvaluation_Paramter_instances.comment_monthtype_xpath, settings.pic_file_path)
			sleep(5)
			element_oprate_instances.element_save_pic(settings.pic_file_path,'Statistics_rec_state_type')
			BasePage.Base.driver.swipe(int(0.18 * settings.width), int(0.3 * settings.height), int(0.5 * settings.width), int(0.3 * settings.height),800)

		except WebDriverException,error:
			print error
			element_oprate_instances.element_save_pic(settings.pic_file_path, 'comprehensive_evaluation_fail')
			raise

	# 综合评价-第二个统计分析查询
	def CompEvaluation_second_statis(self):
		try:
			#--本月
			element_oprate_instances.element_click(CompEvaluation_Paramter_instances.comment_month_xpath, settings.pic_file_path)
			element_oprate_instances.element_save_pic(settings.pic_file_path, 'Statistics_rec_state_src')

		except WebDriverException,error:
			print error
			element_oprate_instances.element_save_pic(settings.pic_file_path, 'comprehensive_evaluation_fail')
			raise

	#z综合评价查询结果--反查功能
	def statistics_pegging(self,type=None):
		# 获取到上报数第一个数量并返回,根据传入的参数进行判断，启用第几个xpath
		if type:
			report_num = element_find_instances.find_element(CompEvaluation_Paramter_instances.Statistics_pegging_report_num, settings.pic_file_path).get_attribute('text')
			#点击上报数第一个
			element_oprate_instances.element_click(CompEvaluation_Paramter_instances.Statistics_pegging_report_num,settings.pic_file_path)
		else:
			report_num = element_find_instances.find_element(CompEvaluation_Paramter_instances.Statistics_pegging_num, settings.pic_file_path).get_attribute('text')
			# 点击上报数第一个
			element_oprate_instances.element_click(CompEvaluation_Paramter_instances.Statistics_pegging_num,settings.pic_file_path)

		element_oprate_instances.element_save_pic(settings.pic_file_path,'Statistics_pegging_report_num_'+str(random.randint(1,100)))
		return report_num

	#综合评价查询结果--图表切换功能
	def statistics_chart_switch(self):
		element_oprate_instances.element_click(CompEvaluation_Paramter_instances.Statistics_chart_switch_button,settings.pic_file_path)
		sleep(5)
		element_oprate_instances.element_save_pic(settings.pic_file_path,'Statistics_chart_switch' + str(random.randint(1,100)))
		#切换到 --列表
		element_oprate_instances.element_click(CompEvaluation_Paramter_instances.Statistics_chart_switch_button,settings.pic_file_path)
		sleep(2)

	def statistics_first_rec_click(self):
		sleep(2)
		#获取当前第一条案件的任务号
		task_num = element_find_instances.find_element(CompEvaluation_Paramter_instances.Statistics_first_Rec_location,settings.pic_file_path).get_attribute('text')
		print u'当前操作的案件号为： '+str(task_num)
		# 点击打开搜索结果--第一条案件
		element_oprate_instances.element_click(CompEvaluation_Paramter_instances.Statistics_first_Rec_location,settings.pic_file_path)
		#案件详情页面打开之后截图
		element_oprate_instances.element_save_pic(settings.pic_file_path,'statistics_pegging_first_rec_click_detail'+task_num)

	#返回功能
	def back_to_up_level(self):
		#点击左上角的回退按钮
		sleep(1)
		element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)

statistics_base_instances = comprehensive_evaluation_factory()

class eGovaPluginStatistics():
	#综合评价--问题来源分组--问题来源统计
	#检查当前是否在综合查询界面
	def statistics_first_statis(self):
		if element_oprate_instances.element_display_commit(CompEvaluation_Paramter_instances.group_name_id,settings.pic_file_path):
			print u'综合查询页面已打开，调用综合查询的每个统计功能'
		else:
			#调用返回的功能和打开综合查询的功能
			try:
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
			except Exception,error:
				print u'调用返回功能失败'
			statistics_base_instances.open_comprehensiveevaluation_plug()
		#调用综合评价的查询按钮
		statistics_base_instances.CompEvaluation_first_statis()
		#调用切换图表功能
		statistics_base_instances.statistics_chart_switch()
		#调用反查功能，并把反查的案件数量进行返回
		try:
			report_num_pegging = statistics_base_instances.statistics_pegging()
		except Exception,error:
			#直接调用返回，并结束本方法
			statistics_base_instances.back_to_up_level()
			print u'未获取到统计数据'
			raise
		report_num_pegging_result = element_find_instances.find_element(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path).get_attribute('text')
		try:
			statistics_base_instances.statistics_first_rec_click()
		except Exception,error:
			#直接返回到列表
			statistics_base_instances.back_to_up_level()
			statistics_base_instances.back_to_up_level()
			print u'反查失败，未反查到数据'
			raise
		#返回
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		if report_num_pegging in report_num_pegging_result:
			print u'综合评价--案件动态--根据类型查询成功，反查数量与结果一致'
		else:
			print u'综合评价--案件动态--根据类型查询失败，反查数量与结果不一致'
			raise

	# 综合评价--高发问题分组--问题分类统计（部件）
	def statistics_second_statis(self):
		if element_oprate_instances.element_display_commit(CompEvaluation_Paramter_instances.group_name_id,settings.pic_file_path):
			print u'综合查询页面已打开，调用综合查询的每个统计功能'
		else:
			#调用返回的功能和打开综合查询的功能
			try:
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
			except Exception,error:
				print u'调用返回功能失败'
			statistics_base_instances.open_comprehensiveevaluation_plug()
		#调用综合评价的查询按钮
		element_oprate_instances.element_click(CompEvaluation_Paramter_instances.comment_month_xpath,settings.pic_file_path)
		element_oprate_instances.element_save_pic(settings.pic_file_path,'statistics_second_statis_2')
		#调用切换图表功能
		statistics_base_instances.statistics_chart_switch()
		#调用反查功能，并把反查的案件数量进行返回
		try:
			report_num_pegging = statistics_base_instances.statistics_pegging()
		except Exception,error:
			#直接调用返回，并结束本方法
			statistics_base_instances.back_to_up_level()
			print u'未获取到统计数据'
			raise
		report_num_pegging_result = element_find_instances.find_element(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path).get_attribute('text')
		try:
			statistics_base_instances.statistics_first_rec_click()
		except Exception,error:
			#直接返回到列表
			statistics_base_instances.back_to_up_level()
			statistics_base_instances.back_to_up_level()
			print u'反查失败，未反查到数据'
			raise
		#返回
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		if report_num_pegging in report_num_pegging_result:
			print u'综合评价--案件动态--根据类型查询成功，反查数量与结果一致'
		else:
			print u'综合评价--案件动态--根据类型查询失败，反查数量与结果不一致'
			raise

	#综合评价--高发问题分组--问题分类统计（事件）
	def statistics_third_statis(self):
		if element_oprate_instances.element_display_commit(CompEvaluation_Paramter_instances.group_name_id,settings.pic_file_path):
			print u'综合查询页面已打开，调用综合查询的每个统计功能'
		else:
			#调用返回的功能和打开综合查询的功能
			try:
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
			except Exception,error:
				print u'调用返回功能失败'
			statistics_base_instances.open_comprehensiveevaluation_plug()
		#调用综合评价的查询按钮
		element_oprate_instances.element_click(CompEvaluation_Paramter_instances.third_month,settings.pic_file_path)
		element_oprate_instances.element_save_pic(settings.pic_file_path, 'statistics_second_statis_2')
		#调用切换图表功能
		statistics_base_instances.statistics_chart_switch()
		#调用反查功能，并把反查的案件数量进行返回
		try:
			report_num_pegging = statistics_base_instances.statistics_pegging()
		except Exception,error:
			#直接调用返回，并结束本方法
			statistics_base_instances.back_to_up_level()
			print u'未获取到统计数据'
			raise
		report_num_pegging_result = element_find_instances.find_element(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path).get_attribute('text')
		try:
			statistics_base_instances.statistics_first_rec_click()
		except Exception,error:
			#直接返回到列表
			statistics_base_instances.back_to_up_level()
			statistics_base_instances.back_to_up_level()
			print u'反查失败，未反查到数据'
			raise
		#返回
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		if report_num_pegging in report_num_pegging_result:
			print u'综合评价--案件动态--根据类型查询成功，反查数量与结果一致'
		else:
			print u'综合评价--案件动态--根据类型查询失败，反查数量与结果不一致'
			raise

	#综合评价--高发问题分组--事件高发（TOP5）
	def statistics_fourth_statis(self):
		if element_oprate_instances.element_display_commit(CompEvaluation_Paramter_instances.group_name_id,settings.pic_file_path):
			print u'综合查询页面已打开，调用综合查询的每个统计功能'
		else:
			#调用返回的功能和打开综合查询的功能
			try:
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
			except Exception,error:
				print u'调用返回功能失败'
			statistics_base_instances.open_comprehensiveevaluation_plug()
		#调用综合评价的查询按钮
		element_oprate_instances.element_click(CompEvaluation_Paramter_instances.fourth_month,settings.pic_file_path)
		element_oprate_instances.element_save_pic(settings.pic_file_path, 'statistics_second_statis_2')
		#调用切换图表功能
		statistics_base_instances.statistics_chart_switch()
		#调用反查功能，并把反查的案件数量进行返回
		try:
			report_num_pegging = statistics_base_instances.statistics_pegging()
		except Exception,error:
			#直接调用返回，并结束本方法
			statistics_base_instances.back_to_up_level()
			print u'未获取到统计数据'
			raise
		report_num_pegging_result = element_find_instances.find_element(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path).get_attribute('text')
		try:
			statistics_base_instances.statistics_first_rec_click()
		except Exception,error:
			#直接返回到列表
			statistics_base_instances.back_to_up_level()
			statistics_base_instances.back_to_up_level()
			print u'反查失败，未反查到数据'
			raise
		#返回
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		if report_num_pegging in report_num_pegging_result:
			print u'综合评价--案件动态--根据类型查询成功，反查数量与结果一致'
		else:
			print u'综合评价--案件动态--根据类型查询失败，反查数量与结果不一致'
			raise

	#综合评价--高发问题分组--部件高发（TOP5）
	def statistics_fifth_statis(self):
		if element_oprate_instances.element_display_commit(CompEvaluation_Paramter_instances.group_name_id,settings.pic_file_path):
			print u'综合查询页面已打开，调用综合查询的每个统计功能'
		else:
			#调用返回的功能和打开综合查询的功能
			try:
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
				element_oprate_instances.element_click(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path)
			except Exception,error:
				print u'调用返回功能失败'
			statistics_base_instances.open_comprehensiveevaluation_plug()
		#调用综合评价的查询按钮
		element_oprate_instances.element_click(CompEvaluation_Paramter_instances.fifth_month,settings.pic_file_path)
		element_oprate_instances.element_save_pic(settings.pic_file_path, 'statistics_second_statis_2')
		#调用切换图表功能
		statistics_base_instances.statistics_chart_switch()
		#调用反查功能，并把反查的案件数量进行返回
		try:
			report_num_pegging = statistics_base_instances.statistics_pegging()
		except Exception,error:
			#直接调用返回，并结束本方法
			statistics_base_instances.back_to_up_level()
			print u'未获取到统计数据'
			raise
		report_num_pegging_result = element_find_instances.find_element(dealHelper_parameter.dealhelper_back_button,settings.pic_file_path).get_attribute('text')
		try:
			statistics_base_instances.statistics_first_rec_click()
		except Exception,error:
			#直接返回到列表
			statistics_base_instances.back_to_up_level()
			statistics_base_instances.back_to_up_level()
			print u'反查失败，未反查到数据'
			raise
		#返回
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		statistics_base_instances.back_to_up_level()
		if report_num_pegging in report_num_pegging_result:
			print u'综合评价--案件动态--根据类型查询成功，反查数量与结果一致'
		else:
			print u'综合评价--案件动态--根据类型查询失败，反查数量与结果不一致'
			raise

if __name__ == '__main__':
	unittest.main()
